home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / octa209s.zip / octave-2.09 / libcruft / minpack / hybrj1.f < prev    next >
Text File  |  1996-07-19  |  4KB  |  128 lines

  1.       SUBROUTINE HYBRJ1(FCN,N,X,FVEC,FJAC,LDFJAC,TOL,INFO,WA,LWA)
  2.       INTEGER N,LDFJAC,INFO,LWA
  3.       DOUBLE PRECISION TOL
  4.       DOUBLE PRECISION X(N),FVEC(N),FJAC(LDFJAC,N),WA(LWA)
  5.       EXTERNAL FCN
  6. C     **********
  7. C
  8. C     SUBROUTINE HYBRJ1
  9. C
  10. C     THE PURPOSE OF HYBRJ1 IS TO FIND A ZERO OF A SYSTEM OF
  11. C     N NONLINEAR FUNCTIONS IN N VARIABLES BY A MODIFICATION
  12. C     OF THE POWELL HYBRID METHOD. THIS IS DONE BY USING THE
  13. C     MORE GENERAL NONLINEAR EQUATION SOLVER HYBRJ. THE USER
  14. C     MUST PROVIDE A SUBROUTINE WHICH CALCULATES THE FUNCTIONS
  15. C     AND THE JACOBIAN.
  16. C
  17. C     THE SUBROUTINE STATEMENT IS
  18. C
  19. C       SUBROUTINE HYBRJ1(FCN,N,X,FVEC,FJAC,LDFJAC,TOL,INFO,WA,LWA)
  20. C
  21. C     WHERE
  22. C
  23. C       FCN IS THE NAME OF THE USER-SUPPLIED SUBROUTINE WHICH
  24. C         CALCULATES THE FUNCTIONS AND THE JACOBIAN. FCN MUST
  25. C         BE DECLARED IN AN EXTERNAL STATEMENT IN THE USER
  26. C         CALLING PROGRAM, AND SHOULD BE WRITTEN AS FOLLOWS.
  27. C
  28. C         SUBROUTINE FCN(N,X,FVEC,FJAC,LDFJAC,IFLAG)
  29. C         INTEGER N,LDFJAC,IFLAG
  30. C         DOUBLE PRECISION X(N),FVEC(N),FJAC(LDFJAC,N)
  31. C         ----------
  32. C         IF IFLAG = 1 CALCULATE THE FUNCTIONS AT X AND
  33. C         RETURN THIS VECTOR IN FVEC. DO NOT ALTER FJAC.
  34. C         IF IFLAG = 2 CALCULATE THE JACOBIAN AT X AND
  35. C         RETURN THIS MATRIX IN FJAC. DO NOT ALTER FVEC.
  36. C         ---------
  37. C         RETURN
  38. C         END
  39. C
  40. C         THE VALUE OF IFLAG SHOULD NOT BE CHANGED BY FCN UNLESS
  41. C         THE USER WANTS TO TERMINATE EXECUTION OF HYBRJ1.
  42. C         IN THIS CASE SET IFLAG TO A NEGATIVE INTEGER.
  43. C
  44. C       N IS A POSITIVE INTEGER INPUT VARIABLE SET TO THE NUMBER
  45. C         OF FUNCTIONS AND VARIABLES.
  46. C
  47. C       X IS AN ARRAY OF LENGTH N. ON INPUT X MUST CONTAIN
  48. C         AN INITIAL ESTIMATE OF THE SOLUTION VECTOR. ON OUTPUT X
  49. C         CONTAINS THE FINAL ESTIMATE OF THE SOLUTION VECTOR.
  50. C
  51. C       FVEC IS AN OUTPUT ARRAY OF LENGTH N WHICH CONTAINS
  52. C         THE FUNCTIONS EVALUATED AT THE OUTPUT X.
  53. C
  54. C       FJAC IS AN OUTPUT N BY N ARRAY WHICH CONTAINS THE
  55. C         ORTHOGONAL MATRIX Q PRODUCED BY THE QR FACTORIZATION
  56. C         OF THE FINAL APPROXIMATE JACOBIAN.
  57. C
  58. C       LDFJAC IS A POSITIVE INTEGER INPUT VARIABLE NOT LESS THAN N
  59. C         WHICH SPECIFIES THE LEADING DIMENSION OF THE ARRAY FJAC.
  60. C
  61. C       TOL IS A NONNEGATIVE INPUT VARIABLE. TERMINATION OCCURS
  62. C         WHEN THE ALGORITHM ESTIMATES THAT THE RELATIVE ERROR
  63. C         BETWEEN X AND THE SOLUTION IS AT MOST TOL.
  64. C
  65. C       INFO IS AN INTEGER OUTPUT VARIABLE. IF THE USER HAS
  66. C         TERMINATED EXECUTION, INFO IS SET TO THE (NEGATIVE)
  67. C         VALUE OF IFLAG. SEE DESCRIPTION OF FCN. OTHERWISE,
  68. C         INFO IS SET AS FOLLOWS.
  69. C
  70. C         INFO = 0   IMPROPER INPUT PARAMETERS.
  71. C
  72. C         INFO = 1   ALGORITHM ESTIMATES THAT THE RELATIVE ERROR
  73. C                    BETWEEN X AND THE SOLUTION IS AT MOST TOL.
  74. C
  75. C         INFO = 2   NUMBER OF CALLS TO FCN WITH IFLAG = 1 HAS
  76. C                    REACHED 100*(N+1).
  77. C
  78. C         INFO = 3   TOL IS TOO SMALL. NO FURTHER IMPROVEMENT IN
  79. C                    THE APPROXIMATE SOLUTION X IS POSSIBLE.
  80. C
  81. C         INFO = 4   ITERATION IS NOT MAKING GOOD PROGRESS.
  82. C
  83. C       WA IS A WORK ARRAY OF LENGTH LWA.
  84. C
  85. C       LWA IS A POSITIVE INTEGER INPUT VARIABLE NOT LESS THAN
  86. C         (N*(N+13))/2.
  87. C
  88. C     SUBPROGRAMS CALLED
  89. C
  90. C       USER-SUPPLIED ...... FCN
  91. C
  92. C       MINPACK-SUPPLIED ... HYBRJ
  93. C
  94. C     MINPACK. VERSION OF JULY 1979.
  95. C     BURTON S. GARBOW, KENNETH E. HILLSTROM, JORGE J. MORE
  96. C
  97. C     **********
  98.       INTEGER J,LR,MAXFEV,MODE,NFEV,NJEV,NPRINT
  99.       DOUBLE PRECISION FACTOR,ONE,XTOL,ZERO
  100.       DATA FACTOR,ONE,ZERO /1.0D2,1.0D0,0.0D0/
  101.       INFO = 0
  102. C
  103. C     CHECK THE INPUT PARAMETERS FOR ERRORS.
  104. C
  105.       IF (N .LE. 0 .OR. LDFJAC .LT. N .OR. TOL .LT. ZERO
  106.      *    .OR. LWA .LT. (N*(N + 13))/2) GO TO 20
  107. C
  108. C     CALL HYBRJ.
  109. C
  110.       MAXFEV = 100*(N + 1)
  111.       XTOL = TOL
  112.       MODE = 2
  113.       DO 10 J = 1, N
  114.          WA(J) = ONE
  115.    10    CONTINUE
  116.       NPRINT = 0
  117.       LR = (N*(N + 1))/2
  118.       CALL HYBRJ(FCN,N,X,FVEC,FJAC,LDFJAC,XTOL,MAXFEV,WA(1),MODE,
  119.      *           FACTOR,NPRINT,INFO,NFEV,NJEV,WA(6*N+1),LR,WA(N+1),
  120.      *           WA(2*N+1),WA(3*N+1),WA(4*N+1),WA(5*N+1))
  121.       IF (INFO .EQ. 5) INFO = 4
  122.    20 CONTINUE
  123.       RETURN
  124. C
  125. C     LAST CARD OF SUBROUTINE HYBRJ1.
  126. C
  127.       END
  128.